using System.Collections.Generic;
using EntitiesAndMappings.Entities;
using NHibernate.Criterion;
using ProyectoActivos.Const;

namespace ProyectoActivos.Daos
{
    public class ProveedorDAO : BaseDAO<Proveedor>
    {
        public IList<Proveedor> Buscar(Proveedor proveedor)
        {
            IList<Proveedor> lista;
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<Proveedor>();
                    if (!string.IsNullOrEmpty(proveedor.Ruc))
                    {
                        criteria.Add(Restrictions.Like("Ruc", proveedor.Ruc + "%"));
                    }
                    if (!string.IsNullOrEmpty(proveedor.RazonSocial))
                    {
                        criteria.Add(Restrictions.Like("RazonSocial", proveedor.RazonSocial + "%"));
                    }
                  
                    lista = criteria.List<Proveedor>();
                    transaction.Commit();
                }
            }
            return lista;
        }

        public IList<Proveedor> BuscarEnConsulta(Proveedor proveedor)
        {
            IList<Proveedor> lista;
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<Proveedor>();
                    if (!string.IsNullOrEmpty(proveedor.Ruc))
                    {
                        criteria.Add(Restrictions.Like("Ruc", proveedor.Ruc + "%"));
                    }
                    if (!string.IsNullOrEmpty(proveedor.RazonSocial))
                    {
                        criteria.Add(Restrictions.Like("RazonSocial", proveedor.RazonSocial + "%"));
                    }
                    criteria.Add(Restrictions.Eq("Estado", Estado.Activo));
                    lista = criteria.List<Proveedor>();
                    transaction.Commit();
                }
            }
            return lista;
        }
        
    }
}